1. Field of the Invention
The present invention relates to a method and apparatus for designing, rendering and programming a user interface.
2. Description of the Prior Art
Computer programs interact with their users through user interfaces, which translate user actions into input for the computer and present information to the user in human readable form. Such interfaces are usually designed to be easy to use. Each hardware device which runs the computer program may use a different interface. For example, Windows-based machines use a graphical user interface (GUI) which uses windows, menus and dialog boxes. These interfaces tend to show a lot of information and are typically the easiest to use. In smaller devices such as a cellular telephone, a personal digital assistant (PDA) or pager, the display is much smaller and the input device more limited. Accordingly, less sophisticated interfaces are usually used. Devices such as a PDA may still provide menus and windows to a certain extent, although the limited size inhibits them from using multiple windows. On a cell phone or pager with a very small display, windows may not be used at all.
One traditional way of designing user interfaces is by using specific components related to the development platform. The development platform can be a specific Operating System platform (such as Windows, Linux, or the Mac OS) or a specific device such as PDA, or a cell phone. For each of these platforms, a hierarchy of proprietary components is used, creating an incompatibility between each other. These components are usually related to visual capacities and specific capabilities of the target platform (components such as windows and buttons are common on GUIs whereas small menus are used on wireless devices), extending the incompatibility between GUIs and wireless interfaces. Moreover, they have inherent limitations: remote access is not available without external software and there is no multi-user collaboration functionality implemented.
In designing user interfaces, therefore, it is usual to design a separate interface for each type of device. In this way, the designer specifies the nature of the interface on each possible device. They must specify the location and type of each interface elements for each device. Naturally, this results in additional work for each device which is supported. Furthermore, it is difficult to support new or future devices if their capabilities are not yet known.
Mark-up languages such as HTML and XML are often used in Internet-based applications to work with several clients. However, the mark-up provides only one nominal view for the document. This view is usually not suitable for different types of devices. Web pages for PDA's and cell phones need to be created, and designed separately in WML rather than HTML to accommodate the limited interface. This requires additional design and development for each device of interest, and requires that the server know the destination device in order to choose the correct formatting.
Java is an attempt to overcome the GUI incompatibility by offering its adaptable set of proprietary components. However, Java still offers at least three sets of UI components: AWT/SWING for GUIs, J2ME for wireless devices and JTAPI for vocal access. It also doesn't really run remotely since applets must be downloaded first before running locally on the client.
None of the existing user interface components is really portable on different platforms creating a necessity of redesigning and recoding to support other existing platforms. All these incompatibilities between different user interfaces are noted in the following statement from the J2ME white paper:
“Consumer devices have substantial differences in memory size, networking, and user interface capabilities, making it very difficult to support all devices with just one solution.”